<script>
    // 组合模式：
    //  组合模式就是一组任务的顺序组合，也就是命令（任务）清单。
    //  组合模式的设计哲学就是将单独的命令（任务）通过组合串联起来，形成顺序的程序列表。

    // 任务清单
    let coding = {
        execute: function () {
            console.log("coding");
        }
    }
    let playgame = {
        execute: function () {
            console.log("playgame");
        }
    }
    let eat = {
        execute: function () {
            console.log("eat");
        }
    }
    let basketball = {
        execute: function () {
            console.log("basketball");
        }
    }
    let meeting = {
        execute: function () {
            console.log("meeting");
        }
    };
    // 工作相关的  把上面的部分任务组合成一个列表
    let work = {
        commands: [meeting, coding, eat],
        execute() {
            for (let i = 0; i < this.commands.length; i++) {
                this.commands[i].execute();
            }
        }
    }
    // 娱乐相关的
    let yule = {
        commands: [eat, playgame, basketball],
        execute() {
            for (let i = 0; i < this.commands.length; i++) {
                this.commands[i].execute();
            }
        }
    }
    // 把把两个组合后的任务，继续组合成一个大任务
    let allDay = {
        commands: [work, yule],
        execute() {
            for (let i = 0; i < this.commands.length; i++) {
                this.commands[i].execute();
            }
        }
    }
    // work.execute();
    // yule.execute();
    allDay.execute();
</script>